package com.ruoyi.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.utils.DateUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 用户余额变动对象 bdm_balance_change
 *
 * @author ruoyi
 * @date 2024-12-19
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class BdmBalanceChange extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id 主键 */
    private Long id;

    /** 用户 id */
    @Excel(name = "用户id")
    private Long userId;

    /** 用户手机号 */
    @Excel(name = "用户手机号")
    private String userPhone;

    /** 用户昵称 */
    @Excel(name = "用户昵称")
    private String nickName;

    /** 头像地址 */
    @Excel(name = "头像地址")
    private String avatar;

    /** 相关单据编号 */
    @Excel(name = "相关单据编号")
    private String relevantDocumentId;

    /** 变动  余额/积分/佣金 */
    @Excel(name = "变动数量")
    private String variation;

    /** 变动前 余额/积分/佣金 */
    @Excel(name = "变动前")
    private String variationBefore;

    /** 变动后 余额/积分/佣金 */
    @Excel(name = "变动后")
    private String variationAfter;

    /** 1余额 2积分 3佣金 */
    @Excel(name = "变动类型")
    private Long variationType;

    /** 1 增加 2减少 */
    @Excel(name = "增减类型")
    private Long addOrSubtract;

    /** 业务类型 */
    @Excel(name = "业务类型")
    private String businessType;

    /** 创建者 */
    @Excel(name = "创建者")
    private String createBy;

    /** 创建时间 */
    @Excel(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    @Excel(name = "更新者")
    private String updateBy;

    /** 更新时间 */
    @Excel(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    @Excel(name = "备注")
    private String remark;


    @Excel(name = "订单号")
    private String orderNum;

    @Excel(name = "代理等级名称")
    private String memberAgencyLevelName;
    /** 会员名称 */
    @Excel(name = "会员名称")
    private String memberName;



    public static BdmBalanceChange getBdmBalanceChange(Long userId,//用户id
                                                       String relevantDocumentId,// 相关单据编号
                                                       String variation,// 余额/积分/佣金 数量
                                                       String variationBefore,//变动前 余额/积分/佣金 数量
                                                       String variationAfter, //变动后 余额/积分/佣金 数量
                                                       Long variationType,//余额/积分/佣金 类型
                                                       Long addOrSubtract,//增 / 减
                                                       String businessType){ //业务类型
        return BdmBalanceChange.builder()
                .userId(userId)
                .relevantDocumentId(relevantDocumentId)
                .variation(variation)
                .variationBefore(variationBefore)
                .variationAfter(variationAfter)
                .variationType(variationType)
                .addOrSubtract(addOrSubtract)
                .businessType(businessType)
                .createBy(userId.toString())
                .createTime(DateUtils.getNowDate())
                .updateBy(userId.toString())
                .updateTime(DateUtils.getNowDate())
                .build();
    }
}
